// npset.h

#ifndef _npset_h_
#define _npset_h_

#if defined(_MSC_VER) && (_MSC_VER > 1000)
	#pragma once
#endif

#include <set>
//#include "np_mem_pool_allocator.h"

template<typename TYPE,
		typename LESS = std::less<TYPE>,
		typename ALLOC = std::allocator<TYPE>//np_mem_pool_allocator<TYPE>
		>
struct npset : public std::set<TYPE, LESS, ALLOC>
{
private:
	typedef std::set<TYPE, LESS, ALLOC> base_set;

public:
#ifdef _DEBUG
	npset()
	{
	}
	~npset()
	{
	}
	npset(const npset& r) : base_set(r)
	{
	}
	npset& operator = (const npset& r)
	{
		(base_set&)*this = (const base_set&)r;
		return *this;
	}
#endif
	typedef typename base_set::iterator iterator;
	iterator erase(iterator it)
		{	this->base_set::erase(it++); return it;	}
	iterator erase(iterator first, iterator last)
		{	this->base_set::erase(first, last); return last;	}
	size_t erase(const TYPE& key)
		{	return this->base_set::erase(key);	}
};

#endif	// #ifndef _npset_h_
